// pages/game/game.js
//倒计时的时间
var TIME=10;
Page({
  /**
   * 页面的初始数据
   */
  //非常重要
//只有写在data里面的属性，才能在wxml中使用，才可以使用  数据双向绑定的功能
//只有写在data里，才能绑定，不绑定应该显示不出来
  data: {
    //表示色块行数的属性 
    row:2,
    //盛放色块详细信息的数组
    items:[  ],
    //倒计时的时间
    time:TIME,
    //小花消失的时间
   
    score:0,//分数
    step:0,//步数
    rrr:"",
    //是否显示小花
    isHidden:false
},
   //初始化页面的调用
    //可以在这个函数中初始化（写）不在wxml中使用的属性
    //如果接受其他页面的值，也都是在onload里面
  onLoad:function(){
    this.width=750;
    this.getDeviceWidth();
    this.gameCore();
    //初始化titles数组
    this.titles=["小白鼠","大灰狼","红太狼","色狼"];
    //获取title的下标
    this.titleIndex=0;
  },
  //get的核心算法函数,游戏的核心算法部分
  gameCore:function(){
    //计算出来每一个色块的间距是多少
    //平均分的 临时色块的宽度
    var tempColorViewWidth=this.width/this.data.row;
    //0.1的意思是说每个间距都占一个色块的10%
    var space = tempColorViewWidth*0.1;//计算后的 色块间距

    //色块的宽度=（总宽度-总间距）/一行有多少色块
    var allSpace=space*(this.data.row+1);//总间距
    var colorViewWidth=(this.width-allSpace)/this.data.row;//色块的宽度
    //获取随机的颜色
    var color = this.randColor();
    //设置特殊颜色是哪一个
    var allNums = this.data.row * this.data.row;
    //var specialInder=Math.random()*allNums
    var specialInder = parseInt(Math.random() * allNums);
    //创建一个临时数组
    var tempList=[];
    //循环将色块的信息  放入数组
    for(var i=0;i<allNums;i++){
      var info={
        width: colorViewWidth,
        color:color,
        space:space,
        //设置一下不透明度
        opacity:i==specialInder?0.5:1
      }
      //添加到数组中是用push
      tempList.push(info);
    }
    this.setData({
      items:tempList
    });
  },
    //rgb(1,1,1)
    //随机颜色的函数
randColor:function(){
 // var r=Math.random()*256  是小数,随机1--255之间的整数,下面是转化为整数
 var r=parseInt(Math.random()*256);
 var g = parseInt(Math.random() * 256);
 var b = parseInt(Math.random() * 256)
 return "rgb("+r+","+g+","+b+")";
},
  //写一个函数来获取一下屏幕的真实宽度
  getDeviceWidth:function () {
    //获取微信里面的方法,获取系统信息
    wx.getSystemInfo({
      success: function(res) {
        //window里面的this
        this.width=res.windowWidth;
    }.bind(this)
    })
  },
  

  success:function(){
    //成功时候更新行数row的值
    //如果做难度扩展  可以添加专门改变this.data.row的值得函数
      this.setData({
        row:++this.data.row,
        //重置一下时间，就是秒数
        time: TIME,
        step:++this.data.step
      });
      //走两步  给一分
      if(this.data.step%2==0){
        this.setData({
          score:++this.data.score
        });
      }

      //到10步的时候，就送一朵小花
      if (this.data.step == 10) {
        //({显示属性的})
       this.setData({ rrr : "19.jpg"})

      //清除定时器，就是如果上次玩的定时器没有清除的话，就是获得的小花，下次玩        //之前要清除他
       if (this.suibian){
         clearTimeout(this.suibian);
       }
        //调用函数，  定时器
      this.suibian=setTimeout(function(){
        this.setData({
          isHidden: !this.data.isHidden
        })
      }.bind(this),3*1000)
      }
      
      //走两步为1分，如果想换等级，如果2分就换等级的话，那就是4步,如果要从小白鼠
      //换到大灰狼的时候，就得再往上走4步
      if (this.data.step % 4 == 0) {
        ++this.titleIndex;
      };
      //防止数组越界
      if (this.titleIndex >= this.titles.length) {
        //下标是从0开始的
        this.titleIndex = this.titles.length - 1;
      }
     

  },
  getTitle:function(){
    //获得标签的，就是你玩到了哪个等级，比如小白鼠，大灰狼
    return this.titles[this.titleIndex];
  },
  fail:function(){
    //失败时直接返回第一关就是2个格子，//如果失败，就要重置下一时间的状态和行数
    this.setData({
      row:2,
      score:0,
      time: TIME
    });
    //清除定时器
    clearInterval(this.timer);
   //失败的时候的提示或别的，弹出框是showModal
    wx.showModal({
      title: '温馨提示',
      //todo:暂时写死，后面根据等级的名字提示
      content: '您已经被警方锁定，您就是被追查的'+this.getTitle()+'，是否重新检测',
      showCancel: true,
      cancelText: '去自首',
      cancelColor: 'red',
      confirmText: '继续检测',
      confirmColor: 'orange',
      success: function(res) {
        console.log(res);
      //返回页面    点击去自首返回上一页     点击继续检测重新开始游戏
        res.cancel?this.back():this.reStartGame();
      }.bind(this)
    })
    this.titleIndex = 0;
  },
  back:function(){
    wx.navigateBack();
    //todo:把分数上传到服务器里面
  },
  reStartGame(){
    //开始一个新的定时器，又走了一遍这个流程
    this.timer=setInterval(this.updateTime,1000);
    this.gameCore();
  },
  chooseAction:function(e){
    var opacity=e.currentTarget.dataset.opacity;
    opacity==1? this.fail():this.success();
    //调用重新加载页面，成功就跳到下一个页面，不成功就返回第一关
    this.gameCore();
  },
//进入页面时调用的函数，自动调用,只要页面显示，都会调用这个函数，页面显示时调用的
  //更新时间的这个任务
  //++在前先运算再赋值，在后是先赋值再运算
  updateTime: function () {
    this.setData({
      time:--this.data.time
    });
    if(this.data.time<=0){
      this.fail();
    }
  },
//进去页面开始的时候
onShow:function(){
  //定时器对象，定义成一个属性
  this.timer = setInterval(this.updateTime,1000);
  this.playMusic();
},
//退出时清除数据
onUnload:function(){
  clearInterval(this.timer);
  this.timer=null;
  this.stopMusic();
},
playMusic:function(){
wx.playBackgroundAudio({
 
dataUrl:'http://bmob-cdn-19180.b0.upaiyun.com/2018/05/16/44c679194005a7e980b52214c0b32aa3.mp3'
})
},
stopMusic:function(){
  wx.stopBackgroundAudio();
}
})